/* ----------------------------- Marlin Toolkit----------------------------*
Authors : Daniel Randle, Alex Bourne
Date Created : Feb 20 2013

File:
	toolkit.h

Description:
	This file contains the necessary declarations of the toolkit class which
	manages the program.
*---------------------------------------------------------------------------*/

#ifndef TOOLKIT_H
#define TOOLKIT_H


// Includes
#include <vector>
#include <nsmath3d.h>
#include <qstring.h>

// Class declarations
class Debug;
class QApplication;
class NSEngine;

namespace ToolkitGui
{
	class MainWindow;
}
using namespace ToolkitGui;

/* ---------------------------------Class Toolkit-----------------------------*
Description:
	This class is the manager for the toolkit. It will contain the links between all
	of the different program data types and windows.

*-----------------------------------------------------------------------------*/
class Toolkit
{
public:
	Toolkit(int argc, char **argv);
	~Toolkit();

	void loadPluginFromFile(const QString & fileName);
	void savePluginToFile(const QString & fileName);
	int start();

private:
	// Helper functions (set up)
	void _setupMapAreas();
	void _setupObjects();
	void _setupShaders();
	void _setupGUI();
	void _setupDebug();

	// Main GUI windows
	MainWindow * mainWin;

	QApplication * app;


	// Engine
	NSEngine * engine;

	#ifdef DEBUG
	Debug *debug;
	#endif
};

#endif // TOOLKIT_H
